require(SPARQL)

## Settings
m5s_group_ocd <- '<http://dati.camera.it/ocd/gruppoParlamentare.rdf/gr1612>'
endpoint <- "http://dati.camera.it/sparql"

# Get all MPs of the M5S
query <- "
select ?name ?surname ?mp_resource ?group_name  where {
 
  ?mp_resource foaf:firstName ?name .
  ?mp_resource foaf:surname ?surname .

  ?mp_resource ocd:aderisce ?join .
  ?join ocd:rif_gruppoParlamentare ?group .
  ?join ocd:rif_gruppoParlamentare <http://dati.camera.it/ocd/gruppoParlamentare.rdf/gr1612> .
  
  ?group dc:title ?group_name .
}
"
qd <- SPARQL(endpoint, query)
mps_m5s <- qd$results


## Store acts
acts_camera_m5s <- data.frame()

for (mp in mps_m5s$mp_resource) {
  
  print(mp)
  
  query <-
    paste0(
      "
    SELECT DISTINCT ?act_resource ?act_type ?act_title ?act_description ?mp_resource ?act_date WHERE {
      ?act_resource ocd:primo_firmatario ", mp, ".
      ?act_resource ocd:primo_firmatario ?mp_resource.
      ?act_resource dc:type ?act_type.
      ?act_resource dc:date ?act_date.
      ?act_resource dc:title ?act_title.
      OPTIONAL{?act_resource dc:description ?act_description}
    }
    LIMIT 10000
    "
    )
  
  qd <- SPARQL(endpoint, query)
  df <- qd$results
  
  print(nrow(df))
  
  if (nrow(df) > 0) {
    acts_camera_m5s <- rbind(acts_camera_m5s, df)
  }
  
  cat("\n")
  save(mps_m5s, acts_camera_m5s, file = "m5s_parliament_m5s_act_details.RData")
  
  Sys.sleep(3)
}

## Historical records

query <- "
select distinct ?act_resource ?act_title ?act_type ?act_date ?group_name where {
  ?act_resource dc:date ?act_date.
  ?act_resource dc:type ?act_type.
  ?act_resource dc:title ?act_title.
{?act_resource ocd:primo_firmatario ?mp_resource}
 UNION {?act_resource ocd:altro_firmatario ?mp_resource}
  ?mp_resource ocd:aderisce ?join.
  ?join ocd:rif_gruppoParlamentare ?group .
  ?group dc:title ?group_name .
  ?act_resource dc:description ?description
          FILTER(REGEX(?description,'(reddito minimo garantito|reddito (minimo )?di cittadinanza)','i'))
} LIMIT 10000
"

qd <- SPARQL(endpoint, query)
gmi_camera_acts <- qd$results
nrow(gmi_camera_acts)

query <- "
select distinct ?act_resource ?act_title ?act_date ?group_name ?act_type where {
  ?act_resource dc:date ?act_date.
{?act_resource ocd:primo_firmatario ?mp_resource}
 UNION {?act_resource ocd:altro_firmatario ?mp_resource}
  ?mp_resource ocd:aderisce ?join .
  ?join ocd:rif_gruppoParlamentare ?group .
  ?group dc:title ?group_name .
  ?act_resource dc:title ?act_title
                FILTER(REGEX(?act_title,'(reddito minimo garantito|reddito (minimo )?di cittadinanza)','i'))
  OPTIONAL {?act_resource dc:type ?act_type}
} LIMIT 1000
"

qd <- SPARQL(endpoint, query)
gmi_camera_bills <- qd$results

# Senato

endpoint <- "http://dati.senato.it/sparql"

query <- "
    PREFIX osr: <http://dati.senato.it/osr/>
  PREFIX ocd: <http://dati.camera.it/ocd/>
  PREFIX foaf: <http://xmlns.com/foaf/0.1/>
  
  select distinct ?ddl ?titolo ?date ?nomeGruppo where {
    ?ddl a osr:Ddl.
    ?ddl osr:dataPresentazione ?date.
    ?ddl osr:iniziativa ?iniziativa.
    OPTIONAL{
      ?iniziativa osr:senatore ?senatore.
      ?senatore ocd:aderisce ?aderisce.
      ?aderisce osr:gruppo ?gruppo.
      ?gruppo osr:denominazione ?denominazione.
      ?denominazione osr:titolo ?nomeGruppo
    }
    ?ddl osr:titolo ?titolo
    FILTER(REGEX(?titolo,'(reddito minimo garantito|reddito (minimo )?di cittadinanza)','i'))
  }
"

qd <- SPARQL(endpoint, query)
gmi_senato_bills <- qd$results

## Add senators manually

gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/6601>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/632>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/40572>"] <- 
  "Partito Democratico"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/42644>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/42198>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/44996>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/45347>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills$nomeGruppo[gmi_senato_bills$ddl=="<http://dati.senato.it/ddl/40602>"] <- 
  "Iniziativa popolare"

## 'Reddito cittadinanza' only

# Camera

endpoint <- "http://dati.camera.it/sparql"

query <- "
select distinct ?act_resource ?act_title ?act_type ?act_date ?group_name where {
?act_resource dc:date ?act_date.
?act_resource dc:type ?act_type.
?act_resource dc:title ?act_title.
{?act_resource ocd:primo_firmatario ?mp_resource}
UNION {?act_resource ocd:altro_firmatario ?mp_resource}
?mp_resource ocd:aderisce ?join.
?join ocd:rif_gruppoParlamentare ?group .
?group dc:title ?group_name .
?act_resource dc:description ?description
FILTER(REGEX(?description,'(reddito (minimo )?di cittadinanza)','i'))
} LIMIT 10000
"

qd <- SPARQL(endpoint, query)
gmi_camera_acts_cittadinanza <- qd$results
nrow(gmi_camera_acts_cittadinanza)

query <- "
select distinct ?act_resource ?act_title ?act_date ?group_name ?act_type where {
?act_resource dc:date ?act_date.
{?act_resource ocd:primo_firmatario ?mp_resource}
UNION {?act_resource ocd:altro_firmatario ?mp_resource}
?mp_resource ocd:aderisce ?join .
?join ocd:rif_gruppoParlamentare ?group .
?group dc:title ?group_name .
?act_resource dc:title ?act_title
FILTER(REGEX(?act_title,'(reddito (minimo )?di cittadinanza)','i'))
OPTIONAL {?act_resource dc:type ?act_type}
} LIMIT 1000
"

qd <- SPARQL(endpoint, query)
gmi_camera_bills_cittadinanza <- qd$results

# Senato

endpoint <- "http://dati.senato.it/sparql"

query <- "
PREFIX osr: <http://dati.senato.it/osr/>
PREFIX ocd: <http://dati.camera.it/ocd/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select distinct ?ddl ?titolo ?date ?nomeGruppo where {
?ddl a osr:Ddl.
?ddl osr:dataPresentazione ?date.
?ddl osr:iniziativa ?iniziativa.
OPTIONAL{
?iniziativa osr:senatore ?senatore.
?senatore ocd:aderisce ?aderisce.
?aderisce osr:gruppo ?gruppo.
?gruppo osr:denominazione ?denominazione.
?denominazione osr:titolo ?nomeGruppo
}
?ddl osr:titolo ?titolo
FILTER(REGEX(?titolo,'reddito (minimo )?di cittadinanza','i'))
}
"

qd <- SPARQL(endpoint, query)
gmi_senato_bills_cittadinanza <- qd$results

## Add senators manually

gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/6601>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/632>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/40572>"] <- 
  "Partito Democratico"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/42644>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/42198>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/44996>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/45347>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills_cittadinanza$nomeGruppo[gmi_senato_bills_cittadinanza$ddl=="<http://dati.senato.it/ddl/40602>"] <- 
  "Iniziativa popolare"

## - ## 

## 'GMI' only


# Camera

endpoint <- "http://dati.camera.it/sparql"

query <- "
select distinct ?act_resource ?act_title ?act_type ?act_date ?group_name where {
?act_resource dc:date ?act_date.
?act_resource dc:type ?act_type.
?act_resource dc:title ?act_title.
{?act_resource ocd:primo_firmatario ?mp_resource}
UNION {?act_resource ocd:altro_firmatario ?mp_resource}
?mp_resource ocd:aderisce ?join.
?join ocd:rif_gruppoParlamentare ?group .
?group dc:title ?group_name .
?act_resource dc:description ?description
FILTER(REGEX(?description,'reddito minimo garantito','i'))
} LIMIT 10000
"

qd <- SPARQL(endpoint, query)
gmi_camera_acts_garantito <- qd$results
nrow(gmi_camera_acts_garantito)

query <- "
select distinct ?act_resource ?act_title ?act_date ?group_name ?act_type where {
?act_resource dc:date ?act_date.
{?act_resource ocd:primo_firmatario ?mp_resource}
UNION {?act_resource ocd:altro_firmatario ?mp_resource}
?mp_resource ocd:aderisce ?join .
?join ocd:rif_gruppoParlamentare ?group .
?group dc:title ?group_name .
?act_resource dc:title ?act_title
FILTER(REGEX(?act_title,'reddito minimo garantito','i'))
OPTIONAL {?act_resource dc:type ?act_type}
} LIMIT 1000
"

qd <- SPARQL(endpoint, query)
gmi_camera_bills_garantito <- qd$results

# Senato

endpoint <- "http://dati.senato.it/sparql"

query <- "
PREFIX osr: <http://dati.senato.it/osr/>
PREFIX ocd: <http://dati.camera.it/ocd/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select distinct ?ddl ?titolo ?date ?nomeGruppo where {
?ddl a osr:Ddl.
?ddl osr:dataPresentazione ?date.
?ddl osr:iniziativa ?iniziativa.
OPTIONAL{
?iniziativa osr:senatore ?senatore.
?senatore ocd:aderisce ?aderisce.
?aderisce osr:gruppo ?gruppo.
?gruppo osr:denominazione ?denominazione.
?denominazione osr:titolo ?nomeGruppo
}
?ddl osr:titolo ?titolo
FILTER(REGEX(?titolo,'(reddito minimo garantito)','i'))
}
"

qd <- SPARQL(endpoint, query)
gmi_senato_bills_garantito <- qd$results

## Add senators manually

gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/6601>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/632>"] <- 
  "Alleanza Nazionale"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/40572>"] <- 
  "Partito Democratico"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/42644>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/42198>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/44996>"] <- 
  "Movimento 5 Stelle"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/45347>"] <- 
  "Sinistra e Libertá"
gmi_senato_bills_garantito$nomeGruppo[gmi_senato_bills_garantito$ddl=="<http://dati.senato.it/ddl/40602>"] <- 
  "Iniziativa popolare"

## - ## 

save(gmi_camera_acts, gmi_camera_bills, gmi_senato_bills,
     gmi_camera_acts_cittadinanza,
     gmi_camera_bills_cittadinanza,
     gmi_senato_bills_cittadinanza, 
     gmi_camera_acts_garantito,
     gmi_camera_bills_garantito,
     gmi_senato_bills_garantito,
     file = "m5s_parliament_gmi_act_details.RData")



